A little v3.0.0 BTS …
What Went Into Version 3.0 (Or: Why Sometimes You Have to Tear It Down First)
If you’ve been using Die Roller for RPGs 2 for a while, here’s something the app never told you: parts of it were held together by code older than some of the TTRPGs it supports.
I wrote the original Die Roller for RPGs in Objective-C back when iOS 10 was current. I rewrote it in Swift a couple of years later, and updated to more modern conventions, but the core data model never got the overhaul it needed. Every new feature meant working around that foundation rather than building on it cleanly.
By the time I started thinking seriously about iCloud sync (something users had been asking about) it became clear that adding it to the existing architecture would be more like duct-taping a jet engine to a bicycle than building something solid. The right move was to do the rebuild first, and then add sync on top of something that could actually support it.
So that’s most of what 3.0 is: a foundation. The parts you see—the dice, the sets, the groups—look about the same. Underneath, it’s a completely different structure.
Why iCloud sync specifically?
The honest answer is that I use this app at the table, and I found myself rebuilding my dice sets every time I switched devices. If the developer is too annoyed to use his own feature, something needs to change! 🤣 … remember Larry Wall’s old adage about the three virtues of a programmer? Something about hubris and impatience … and laziness? That was definitely the laziness coming out! 😉
With 3.0, your library is just there, on every device, without thinking about it. That’s how a utility like this should work.
What’s next?
The 3.0 rebuild unlocks things that weren’t practical before: a proper macOS app, better accessibility support, and eventually some Daggerheart-specific features that go beyond the current Duality Dice button. Version 3.1 is already taking shape.
In the meantime, if you haven’t tried 3.0 yet — it’s free on the App Store through May 18th.

Share this content:
You must be logged in to post a comment.